package com.power.test.model;


import lombok.Getter;
import lombok.Setter;

/**
 * API响应实体
 *
 * @param <T>
 */
@Getter
@Setter
public class APIResponse<T> {
    /**
     * API 操作结果
     */
    private ErrorCodeEnum errorCode = ErrorCodeEnum.成功;

    /**
     * API 返回结果
     */
    private T result;

    /**
     * 构造函数
     */
    public APIResponse() {
    }

    /**
     * 构造函数
     * @param errorCode 结果码
     * @param result 数据
     */
    public APIResponse(ErrorCodeEnum errorCode, T result) {
        this.errorCode = errorCode;
        this.result = result;
    }

    /**
     * 返回成功的结果
     *
     * @param data 数据
     * @param <T> 泛型
     * @return
     */
    public static <T> APIResponse<T> success(T data) {
        return new APIResponse<T>(ErrorCodeEnum.成功, data);
    }

    /**
     * 返回失败的结果
     *
     * @param data 数据
     * @param <T> 泛型
     * @return
     */
    public static <T> APIResponse<T> error(T data) {
        return new APIResponse<T>(ErrorCodeEnum.失败, data);
    }

    /**
     * 返回失败的结果
     * @return
     */
    public static <T> APIResponse<T> error() {
        return new APIResponse<T>(ErrorCodeEnum.失败, null);
    }

    /**
     * 返回结果
     * @param errorCode 结果码
     * @param data 数据
     * @param <T> 泛型
     * @return
     */
    public static <T> APIResponse<T> get(ErrorCodeEnum errorCode, T data) {
        return new APIResponse<T>(errorCode, data);
    }
}

